A split architecture network is an alternate paradigm for network architecture. A split architecture network is composed of a number of nodes, such as routers or switches, like a traditional network architecture. However, in this paradigm, the control plane functionality of the network resides at a single central controller that can be in a single node of the network as illustrated in FIG. 1. This is in contrast to traditional network architecture where the control plane functionality resides on every node in the network. In a split architecture network, the network nodes are stripped of their control plane functionality and provide basic data plane functionality as ‘flow switches.’ A ‘domain,’ as used herein, is an area of a split architecture network where the flow switches are under the control of a single controller.
An example of a split architecture network is an OpenFlow based split architecture network. In an OpenFlow split architecture network, a controller and the flow switches in the data plane communicate using the OpenFlow Protocol. The OpenFlow protocol provides message infrastructure for the controller to program the flow switches in the data plane with appropriate flows for packet forwarding and processing. The controller can also obtain complete network state information for the network by querying each of the network nodes. An ‘OpenFlow domain,’ as used herein, is an area of an OpenFlow split architecture network where the flow switches are under the control of a single logical OpenFlow controller. This single logical OpenFlow controller can be implemented as a set or cluster of controllers responsible for a single domain of switches.
According to the OpenFlow protocol specification, the flow switches are programmed by the controller using the following primitives for packet forwarding and processing in the data plane: rules, which define matches on the packet header fields (such as Ethernet header fields, multi-protocol label switching (MPLS) header fields, and Internet protocol (IP) header fields); actions, which are associated with a rule match; and a collection of statistics for the flow that matches a rule. The flow switch applies the controller programmed rules on incoming packets and executes the associated actions on the matched flow, collecting statistics on the flow at the same time. FIG. 1 illustrates this basic OpenFlow protocol interface between the controller and the flow switch.
One of the main advantages of split architecture networks is that they allow independent optimizations in the control plane and the data plane. The components, functions or applications of the controller can be optimized independent of the underlying network, and similarly, the underlying network flow switch capabilities can be optimized independent of the controller components, functions and applications.
There are many situations that require a node in a network to send out a broadcast packet. These situations can be divided into two categories: a self-generated broadcast packet and a received broadcast packet. A node can self-generate a broadcast packet for specific protocol applications. An important example of a self-generated broadcast packet is the ARP REQUEST packet. Address Resolution Protocol (ARP) is used to resolve the media access control (MAC) address of a network node (router, or switch) given its IP address. In order to query a network node's MAC address, the requestor sends out an ARP REQUEST message. This message contains the query IP address and is broadcast to all devices in the network. The device whose IP address matches the one in the REQUEST message replies with its MAC address.
A node can also receive a packet that needs to be broadcast. A network node needs to broadcast the broadcast packet it receives on all active ports including the controller port. If the network node is configured with virtual local area networks (VLANs), it should broadcast the packet on all the active ports within the VLAN. Since the intelligence to forward packets resides in the controller in the OpenFlow domain, the controller needs to program the underlying flow switches appropriately for broadcast packets. The basic implementation of this configuration is to set the forwarding tables of each flow switch to blindly forward broadcast packets on all active ports for the flow switch.